/*
 * EnemigoAutomata.h
 *
 *  Created on: May 23, 2013
 *      Author: Hernan
 */
#include "Casilla.h"
#include "Escenario.h"
#include "util/Timer.h"


#ifndef ENEMIGOAUTOMATA_H_
#define ENEMIGOAUTOMATA_H_

class Escenario;
class Personaje;
class Casilla;
class EnemigoAutomata {
public:
	static int identificador;
	EnemigoAutomata(Personaje* personajeEnemigo,Escenario* escenario);
	void start();
	void update();
	bool estadoDeVida(); //sigue vivo?
	Casilla* obtenerCasillaActual();
	virtual ~EnemigoAutomata();
	int getId();
	string getNombreAsesino();
	void setNombreAsesino(string s);
	string getRango();
	void setRango(string rango);
	void setProtegido(Personaje* protegido);
	string serialize();
	Personaje *getPersonajeAutomata();
	int generarDanio(int golpeMaximo);

private:
	void patrullar();
	void perseguir();
	void atacar();
	bool actualizarPosicionAutomata();
	bool cambiarCasillaAutomata();
	void calcularCaminoPersonaje(Casilla* casillaInicial, Casilla* casillaFinal);
	Personaje* personajeAutomata;
	Personaje* personajeTarget;
	Personaje* protegido;
	Escenario* escenario;
	bool puedoCambiar;
	bool puedoMover;
	Casilla* casillaTarget;
	int distanciaDelOponente;
	int pasosVision;
	int id;
	string nombreAsesino;
	string rango;
	void persigoOponente();
};

#endif /* ENEMIGOAUTOMATA_H_ */
